package com.liliudong.template.biz.service.sys;

import com.liliudong.template.common.request.sys.SysDictAddRequest;
import com.liliudong.template.common.request.sys.SysDictModifyRequest;
import com.liliudong.template.common.request.sys.SysDictPageRequest;
import com.liliudong.template.common.entity.sys.SysDict;
import com.liliudong.template.common.response.sys.SysDictDetailResponse;
import com.liliudong.template.common.response.sys.SysDictListResponse;
import com.liliudong.template.common.response.sys.SysDictPageResponse;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;

import java.util.List;

/**
 * 服务
 *
 * @author liudo
 * @date 2024-08-01 20:14:50
 */
public interface SysDictService extends IService<SysDict> {

    /**
     * 添加
     *
     * @param sysDictAddRequest 新增dto
     */
    void addOne(SysDictAddRequest sysDictAddRequest);

    /**
     * 删除
     *
     * @param id 主键
     */
    void deleteById(Long id);

    /**
     * 修改
     *
     * @param id               主键
     * @param sysDictModifyRequest 更新dto
     */
    void modifyById(Long id, SysDictModifyRequest sysDictModifyRequest);

    /**
     * 详情
     *
     * @param id 主键
     * @return {@link SysDictDetailResponse }
     */
    SysDictDetailResponse detailById(Long id);

    /**
     * 分页
     *
     * @param page           页面
     * @param size           大小
     * @param sysDictPageRequest dto
     * @return {@link Page< SysDictPageResponse > }
     */
    Page<SysDictPageResponse> queryPage(Long page, Long size, SysDictPageRequest sysDictPageRequest);

    /**
     * 查询列表
     *
     * @return {@link List }<{@link SysDictListResponse }>
     */
    List<SysDictListResponse> queryList();
}
